const { userCollection } = require("../../common/constants");
const { ERROR } = require("../../common/error");

function isUsernameSet(userRecord) {
  return !!userRecord.username;
}
function isNicknameSet(userRecord) {
  return !!userRecord.nickname;
}
function isPasswordSet(userRecord) {
  return !!userRecord.password;
}
function isMobileBound(userRecord) {
  return !!(userRecord.mobile && userRecord.mobile_confirmed);
}
function isEmailBound(userRecord) {
  return !!(userRecord.email && userRecord.email_confirmed);
}
function isWeixinBound(userRecord) {
  return !!(
    userRecord.wx_unionid || Object.keys(userRecord.wx_openid || {}).length
  );
}
function isQQBound(userRecord) {
  return !!(
    userRecord.qq_unionid || Object.keys(userRecord.qq_openid || {}).length
  );
}
function isAlipayBound(userRecord) {
  return !!userRecord.ali_openid;
}
function isAppleBound(userRecord) {
  return !!userRecord.apple_openid;
}

/**
 * 获取账户账户简略信息
 * @tutorial https://uniapp.dcloud.net.cn/uniCloud/uni-id-pages.html#get-account-info
 */
module.exports = async function () {
  const { uid } = this.authInfo;
  const getUserRes = await userCollection.doc(uid).get();
  const userRecord = getUserRes && getUserRes.data && getUserRes.data[0];
  if (!userRecord) {
    throw {
      errCode: ERROR.ACCOUNT_NOT_EXISTS,
    };
  }
  return {
    errCode: 0,
    isUsernameSet: isUsernameSet(userRecord),
    isNicknameSet: isNicknameSet(userRecord),
    isPasswordSet: isPasswordSet(userRecord),
    isMobileBound: isMobileBound(userRecord),
    isEmailBound: isEmailBound(userRecord),
    isWeixinBound: isWeixinBound(userRecord),
    isQQBound: isQQBound(userRecord),
    isAlipayBound: isAlipayBound(userRecord),
    isAppleBound: isAppleBound(userRecord),
  };
};
